#ifndef DRIVER_H
#define DRIVER_H
#include <string>
#include<iostream>
// 可以根据需要引入数据结构头文件
#include <map>
#include "parser.hpp"
#include <sstream>
#include <string>
#include <vector>

// 为了让词法分析器能够访问到Driver类，需要在这里声明一下
# define YY_DECL \
  yy::parser::symbol_type yylex (Driver& drv)
YY_DECL;
class Driver
{
public:
    yy::location m_loc;
    // 在这里可以声明一些需要全局使用的变量
    std::map<std::string, int> variables;
    std::map<std::string, int> functionArgsTable;
    std::map<std::string, int> identifierTable;
    int functionArgsCount;
    int identifierCount;
    int ifCount;
    int whileCount;
    int result;
    std::vector<std::string> if_vector;
    std::vector<std::string> while_vector;
    std::vector<std::string> break_vector;
    std::vector<std::string> continue_vector;


// 声明一个外部的字符串缓冲区
    Driver();
    Driver(std::string fileName);
    ~Driver();
    int parse();
    void scan_begin();
    void scan_end();
   



private:
    std::string m_file;
};
#endif